extern void blkdev_suspend(void);
extern void blkdev_resume(void);
+ extern void time_suspend(void);
+ extern void time_resume(void);
+
unsigned long *pfn_to_mfn_frame_list = NULL;
suspend_record_t *suspend_record = NULL;
struct net_device *dev;
__cli();
+ time_suspend();
+
HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
clear_fixmap(FIX_SHARED_INFO);
HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
memset(empty_zero_page, 0, PAGE_SIZE);
+ time_resume();
+
__sti();
blkdev_resume();
rdtscll(alarm);
}
+void time_suspend(void)
+{
+}
+
+void time_resume(void)
+{
+ unsigned long flags;
+ write_lock_irqsave(&xtime_lock, flags);
+ /* Get timebases for new environment. */
+ __get_time_values_from_xen();
+ /* Reset our own concept of passage of system time. */
+ processed_system_time = shadow_system_time;
+ /* Accept a warp in UTC (wall-clock) time. */
+ last_seen_tv.tv_sec = 0;
+ /* Make sure we resync UTC time with Xen on next timer interrupt. */
+ last_update_from_xen = 0;
+ write_unlock_irqrestore(&xtime_lock, flags);
+}
/*
* /proc/sys/xen: This really belongs in another file. It can stay here for